package ex4;

import java.util.*;

public class Abonne {
	private String nom;
	private String adresse;
	private List<Ouvrage> reservations;
	private List<Ouvrage> emprunts;

	// Constructeurs

	public Abonne(String nom, String adresse) {
		this.nom = nom;
		this.adresse = adresse;
		this.reservations = new ArrayList<Ouvrage>();
		this.emprunts = new ArrayList<Ouvrage>();
	}

	public Abonne(String nom, String adresse, List<Ouvrage> reservations,
			List<Ouvrage> emprunts) {
		this.nom = nom;
		this.adresse = adresse;
		this.reservations = reservations;
		this.emprunts = emprunts;
	}

	public boolean emprunter(Ouvrage ouvrage) {
		// Si l'ouvrage fait parti de sa liste de reservations,
		// on le supprime de celle-ci
		if (this.reservations.contains(ouvrage)) {
			this.reservations.remove(ouvrage);
		}
		return this.emprunts.add(ouvrage);
	}

	public boolean rendre(Ouvrage ouvrage) {
		return this.emprunts.remove(ouvrage);
	}

	public boolean reserver(Ouvrage ouvrage) {
		return this.reservations.add(ouvrage);
	}

	public boolean annulerReservation(Ouvrage ouvrage) {
		return this.reservations.remove(ouvrage);
	}

	// getters

	public String getNom() {
		return this.nom;
	}

	public String getAdresse() {
		return this.adresse;
	}

	public List<Ouvrage> getReservations() {
		return this.reservations;
	}

	public List<Ouvrage> getEmprunts() {
		return this.emprunts;
	}

	public String reservationsToString() {
		String s = "\n";
		for (Ouvrage ouvrage : this.reservations) {
			s = s + ouvrage + "\n";
		}
		return s;
	}

	public String empruntsToString() {
		String s = "\n";
		for (Ouvrage ouvrage : this.emprunts) {
			s = s + ouvrage + "\n";
		}
		return s;
	}

	public String toString() {
		return "\nNom: " + this.nom + "\nAdresse: " + this.adresse
				+ "\n\n  Emprunts : ======== \n" + this.empruntsToString() +
				"\n  Reservations : ======== \n" + this.reservationsToString();
	}
}
